Given the roots of two binary trees root and subRoot, return true if there is a subtree of root with the same structure and node values of subRoot and false otherwise.
A subtree of a binary tree tree is a tree that consists of a node in tree and all of this node's descendants. The tree tree could also be considered as a subtree of itself.
Example 1:

Input: root = [3,4,5,1,2], subRoot = [4,1,2]
Output: true
Example 2:

Input: root = [3,4,5,1,2,null,null,null,null,0], subRoot = [4,1,2]
Output: false
Constraints:
root tree is in the range [1, 2000].subRoot tree is in the range [1, 1000].-10^4 <= root.val <= 10^4
-10^4 <= subRoot.val <= 10^4
每個兩個樹的根結點root, subRoot
題目要實作一個演算法去察看 subRoot 是不是 root 的 subTree
subRoot 是 root 的 subTree 有以下幾種狀況
要檢驗 subRoot tree與 root tree是否相等有幾個條件
1 root 是空的時候 , subRoot 必須是空
2 root 非空, root 的 Tree 與 subRoot 的 Tree 相等
2 root 非空, subRoot 的 Tree 是 root.left Tree 的 subTree
3 root 非空, subRoot 的 Tree 是 root.right Tree 的 subTree


/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func isSubtree(root *TreeNode, subRoot *TreeNode) bool {
if root == nil {
return subRoot == nil
}
return IsEqual(root, subRoot)||isSubTree(root.Left, subRoot)||isSubTree(root.Right, subRoot)
}
func IsEqual(root *TreeNode, subRoot *TreeNode) bool {
if root == nil {
return subRoot == nil
}
if subRoot != nil {
if root.Val != subRoot.Val {
return false
}
return IsEqual(root.Left, subRoot.Left)&&IsEqual(root.Right, subRoot.Right)
} else {
return false
}
}